<?php
namespace Zxf5115\Laravel\Kernel\Controllers\Platform;

use Zxf5115\Laravel\Kernel\Controllers\BaseController;

/**
 * @author zhangxiaofei [<1326336909@qq.com>]
 * @dateTime 2025-09-15
 *
 * 平台基础控制器类
 */
abstract class PlatformController extends BaseController
{
  /**
   * 默认查询条件
   */
  protected array $defaultWhere = [
    ['status', '>', -1]
  ];

  /**
   * 构造方法
   */
  public function __construct()
  {
    parent::__construct();

    // 初始化平台控制器
    $this->initializePlatform();
  }

  /**
   * 初始化平台控制器
   */
  protected function initializePlatform(): void
  {
    // 设置平台控制器专用中间件
    $this->setupPlatformMiddleware();
  }


  /**
   * 设置平台控制器专用中间件
   */
  protected function setupPlatformMiddleware(): void
  {
    $this->middleware($this->getPlatformMiddleware())
         ->except($this->getMiddlewareExceptions());
  }

  /**
   * 获取平台中间件数组的列表
   *
   * @return array 平台中间件数组
   */
  protected function getPlatformMiddleware(): array
  {
    return [
      'auth:platform', // 接口认证
      'log.request', // 接口请求日志,
      'refresh.token.platform', // 接口刷新,
      'white.list', // 白名单认证
      'black.list' // 黑名单认证
    ];
  }

  /**
   * 获取中间件排除的列表
   *
   * @return array 中间件排除数组
   */
  protected function getMiddlewareExceptions(): array
  {
    return ['login', 'kernel'];
  }
}
